
"""
通过一定的方式将词汇映射到指定维度(一般是更高维度)的空间.

广义的word embedding包括所有密集词汇向量的表示方法，如之前学习的word2vec, 即可认为是word embedding的一种.

狭义的word embedding是指在神经网络中加入的embedding层, 对整个网络进行训练的同时产生的embedding矩阵(embedding层的参数),
这个embedding矩阵就是训练过程中所有输入词汇的向量表示组成的矩阵.
"""
import tensorflow as tf
import tensorboard as tb
tf.io.gfile = tb.compat.tensorflow_stub.io.gfile

# 导入torch和tensorboard的摘要写入方法
import torch
import json
import fileinput
from torch.utils.tensorboard import SummaryWriter
# 实例化一个摘要写入对象
writer = SummaryWriter()


# 导入事先准备好的100个中文词汇文件, 形成meta列表原始词汇
# meta = list(map(lambda x: x.strip(), fileinput.FileInput("target.txt")))
meta = []
with fileinput.FileInput("2 nlp/1 文本预处理/2 文本张量表示方法/target.txt", openhook=fileinput.hook_encoded("utf-8")) as f:
    line = f.readline().strip()
    meta = line.split()

print(f"词汇个数：{len(meta)}")
# 随机初始化一个100x50的矩阵, 认为它是我们已经得到的词嵌入矩阵
# 代表100个词汇, 每个词汇被表示成50维的向量
embedded = torch.randn(len(meta), 50)

writer.add_embedding(embedded, metadata=meta)
writer.close()
